gh-117953: Split Up _PyImport_LoadDynamicModuleWithSpec()#118203
Merged
ericsnowcurrently merged 13 commits intopython:mainfrom Apr 29, 2024
Merged
Conversation
cd4c52d to
378778e
Compare
378778e to
52f0656
Compare
Member
Author
|
@encukou, if you have a few minutes, I'm mostly looking for a sanity check on this PR. |
Member
|
This PR looks good, but see my comment here: #118193 (comment) An indirect test of a multiphase module with |
Member
Author
|
Thanks. I'll take a look at that. |
encukou
approved these changes
Apr 29, 2024
Member
encukou
left a comment
There was a problem hiding this comment.
Thanks!
+1, I think this is good to merge. The is_singlephase thing can be sorted out later, see #117953 (comment)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I've pulled this out of #118116.
Basically, I've turned most of
_PyImport_LoadDynamicModuleWithSpec()into two new functions (_PyImport_GetModInitFunc()and_PyImport_RunModInitFunc()) and moved the rest of it out into_imp_create_dynamic_impl(). There shouldn't be any changes in behavior.This change makes some future changes simpler. This is particularly relevant to potentially calling each module init function in the main interpreter first. Thus the critical part of the PR is the addition of
_PyImport_RunModInitFunc(), which is strictly focused on running the init func and validating the result. A later PR will take it a step farther by capturing error information rather than raising exceptions.FWIW, this change also helps readers by clarifying a bit more about what happens when an extension/builtin module is imported.